home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / LDAPSchema.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  4.7 KB  |  188 lines

  1. package netscape.ldap;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5.  
  6. public class LDAPSchema {
  7.    private Hashtable objectClasses = new Hashtable();
  8.    private Hashtable attributes = new Hashtable();
  9.    private Hashtable matchingRules = new Hashtable();
  10.    String entryName;
  11.  
  12.    public void addObjectClass(LDAPObjectClassSchema var1) {
  13.       this.objectClasses.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
  14.    }
  15.  
  16.    public void addAttribute(LDAPAttributeSchema var1) {
  17.       this.attributes.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
  18.    }
  19.  
  20.    public void addMatchingRule(LDAPMatchingRuleSchema var1) {
  21.       this.matchingRules.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
  22.    }
  23.  
  24.    public Enumeration getObjectClasses() {
  25.       return this.objectClasses.elements();
  26.    }
  27.  
  28.    public Enumeration getAttributes() {
  29.       return this.attributes.elements();
  30.    }
  31.  
  32.    public Enumeration getMatchingRules() {
  33.       return this.matchingRules.elements();
  34.    }
  35.  
  36.    public LDAPObjectClassSchema getObjectClass(String var1) {
  37.       return (LDAPObjectClassSchema)this.objectClasses.get(var1.toLowerCase());
  38.    }
  39.  
  40.    public LDAPAttributeSchema getAttribute(String var1) {
  41.       return (LDAPAttributeSchema)this.attributes.get(var1.toLowerCase());
  42.    }
  43.  
  44.    public LDAPMatchingRuleSchema getMatchingRule(String var1) {
  45.       return (LDAPMatchingRuleSchema)this.matchingRules.get(var1.toLowerCase());
  46.    }
  47.  
  48.    public Enumeration getObjectClassNames() {
  49.       return this.objectClasses.keys();
  50.    }
  51.  
  52.    public Enumeration getAttributeNames() {
  53.       return this.attributes.keys();
  54.    }
  55.  
  56.    public Enumeration getMatchingRuleNames() {
  57.       return this.matchingRules.keys();
  58.    }
  59.  
  60.    public void fetchSchema(LDAPConnection var1) throws LDAPException {
  61.       if (var1 != null && var1.isConnected()) {
  62.          LDAPEntry var2 = var1.read("");
  63.          if (var2 == null) {
  64.             throw new LDAPException("", 32);
  65.          } else {
  66.             LDAPAttribute var3 = var2.getAttribute("subschemasubentry");
  67.             this.entryName = "cn=schema";
  68.             if (var3 != null) {
  69.                Enumeration var4 = var3.getStringValues();
  70.                if (var4.hasMoreElements()) {
  71.                   this.entryName = (String)var4.nextElement();
  72.                }
  73.             }
  74.  
  75.             var2 = this.readSchema(var1, this.entryName);
  76.             var3 = var2.getAttribute("objectclasses");
  77.             if (var3 != null) {
  78.                Enumeration var14 = var3.getStringValues();
  79.  
  80.                while(var14.hasMoreElements()) {
  81.                   LDAPObjectClassSchema var5 = new LDAPObjectClassSchema((String)var14.nextElement());
  82.                   this.addObjectClass(var5);
  83.                }
  84.             }
  85.  
  86.             var3 = var2.getAttribute("attributetypes");
  87.             if (var3 != null) {
  88.                Enumeration var15 = var3.getStringValues();
  89.  
  90.                while(var15.hasMoreElements()) {
  91.                   LDAPAttributeSchema var18 = new LDAPAttributeSchema((String)var15.nextElement());
  92.                   this.addAttribute(var18);
  93.                }
  94.             }
  95.  
  96.             Hashtable var19 = new Hashtable();
  97.             var3 = var2.getAttribute("matchingruleuse");
  98.             if (var3 != null) {
  99.                Enumeration var16 = var3.getStringValues();
  100.  
  101.                while(var16.hasMoreElements()) {
  102.                   String var6 = (String)var16.nextElement();
  103.                   LDAPMatchingRuleSchema var7 = new LDAPMatchingRuleSchema((String)null, var6);
  104.                   var19.put(((LDAPSchemaElement)var7).getOID(), var6);
  105.                }
  106.             }
  107.  
  108.             var3 = var2.getAttribute("matchingrules");
  109.             LDAPMatchingRuleSchema var21;
  110.             if (var3 != null) {
  111.                for(Enumeration var17 = var3.getStringValues(); var17.hasMoreElements(); this.addMatchingRule(var21)) {
  112.                   String var20 = (String)var17.nextElement();
  113.                   var21 = new LDAPMatchingRuleSchema(var20, (String)null);
  114.                   String var8 = (String)var19.get(((LDAPSchemaElement)var21).getOID());
  115.                   if (var8 != null) {
  116.                      var21 = new LDAPMatchingRuleSchema(var20, var8);
  117.                   }
  118.                }
  119.             }
  120.  
  121.          }
  122.       } else {
  123.          throw new LDAPException("No connection", 80);
  124.       }
  125.    }
  126.  
  127.    public String toString() {
  128.       String var1 = "Object classes: ";
  129.  
  130.       for(Enumeration var2 = this.getObjectClasses(); var2.hasMoreElements(); var1 = var1 + ' ') {
  131.          var1 = var1 + (String)var2.nextElement();
  132.       }
  133.  
  134.       var1 = var1 + "Attributes: ";
  135.  
  136.       for(Enumeration var8 = this.getAttributes(); var8.hasMoreElements(); var1 = var1 + ' ') {
  137.          var1 = var1 + (String)var8.nextElement();
  138.       }
  139.  
  140.       var1 = var1 + "Matching rules: ";
  141.  
  142.       for(Enumeration var9 = this.getMatchingRules(); var9.hasMoreElements(); var1 = var1 + ' ') {
  143.          var1 = var1 + (String)var9.nextElement();
  144.       }
  145.  
  146.       return var1;
  147.    }
  148.  
  149.    private LDAPEntry readSchema(LDAPConnection var1, String var2) throws LDAPException {
  150.       LDAPSearchResults var3 = var1.search(var2, 0, "objectclass=subschema", (String[])null, false);
  151.       return var3.next();
  152.    }
  153.  
  154.    private static void printEnum(Enumeration var0) {
  155.       while(var0.hasMoreElements()) {
  156.          LDAPSchemaElement var1 = (LDAPSchemaElement)var0.nextElement();
  157.          System.out.println("  " + var1);
  158.       }
  159.  
  160.    }
  161.  
  162.    public static void main(String[] var0) {
  163.       if (var0.length < 2) {
  164.          System.err.println("Usage: netscape.ldap.LDAPSchema HOST PORT");
  165.          System.exit(1);
  166.       }
  167.  
  168.       int var1 = Integer.parseInt(var0[1]);
  169.       LDAPConnection var2 = new LDAPConnection();
  170.  
  171.       try {
  172.          var2.connect(var0[0], var1);
  173.          LDAPSchema var3 = new LDAPSchema();
  174.          var3.fetchSchema(var2);
  175.          var2.disconnect();
  176.          System.out.println("Object classes: ");
  177.          printEnum(var3.getObjectClasses());
  178.          System.out.println("\nAttributes: ");
  179.          printEnum(var3.getAttributes());
  180.          System.out.println("\nMatching rules: ");
  181.          printEnum(var3.getMatchingRules());
  182.          System.exit(0);
  183.       } catch (LDAPException var4) {
  184.          System.err.println(var4);
  185.       }
  186.    }
  187. }
  188.